package 面向对象中级.继承;

public class Test01 {

    //
    //   对象转型：
    //        -子转父：子类转换为父类   花木兰替父从军
    //                  可以转换，但要注意，只能调用父类得属性和方法
    //        -父转子：父类转换为子类
    public static void main(String[] args) {
        //1. 创建子类对象
        Worker w1=new Worker();
        w1.name="花木兰";
        w1.salay=10000;
        //2.把子类对象转换为父类
        Person p1=w1;//没问题，子类拥有和父类相同属性和方法
        //3. 调用父类得属性和父类方法
        System.out.println(p1.name);//??
        p1.eat();//??
        //4. 父类不能调用子类得属性和子类方法
        // System.out.println(p1.salay);//p1 Person 只能调用父类属性和方法
        // p1.work();//p1 Person 只能调用父类属性和方法
        System.out.println("****************************");
        // 父转子：转不了！！！但是只有一种情况是可以的！！！
        //花木兰--->替父从军(爸爸)--->花木兰(可以)
        //5. 创建父类对象
        Person p2=new Person();
        p2.name="张三";
        //6.把父类对象转换为子类
        Worker w2=(Worker) p1;//     int x=(int)long
        //7. 调用
        System.out.println(w2.name);//花木兰
        System.out.println(w2.salay);//10000
        w2.work();//干活 ok
    }
}
